"""The evaluators for the last.fm recommenders"""

from unresyst.recommender.evaluation import BaseEvaluator
from unresyst.recommender.rank_evaluation import RankEvaluator
from models import TourOrderEvalPair
from unresyst.recommender.metrics import rmse, precision_recall

class OrderTourRecommenderEvaluator(BaseEvaluator):
    """The evaluator of the artist recommender"""
    
    EvaluationPairModel = TourOrderEvalPair
    """The model - pairs"""
    
    prediction_metric = rmse
    """The metric"""
    
    recommendation_metric = precision_recall
    """The other metric"""


class OrderTourRankEvaluator(RankEvaluator):
    """Evaluation of the rank metric"""
    
    EvaluationPairModel = TourOrderEvalPair
    """The model - pairs"""
    
    SUBJ_IDS = [
        59L,
        529L,
        964L,
        1085L,
        1199L,
        1362L,
        1477L,
        2206L,
        2248L,
        2784L,
        2793L,
        2924L,
        3485L,
        3887L,
        3890L,
        4203L,
        5881L,
        5954L,
        6255L,
        6324L,
        6934L,
        8394L,
        9066L,
        9527L,
        11575L,
        15779L,
        16789L,
        17056L,
        17256L,
        19162L,
        19464L,
        19643L,
        21428L,
        21847L,
        21931L,
        22205L,
        22490L,
        23093L,
        23721L,
        23822L,
        24384L,
        24872L,
        26901L,
        26956L,
        26985L,
        27591L,
        28893L,
        28948L,
        29838L,
        30173L,
        30336L,
        30422L,
        30517L,
        30609L,
        31762L,
        34631L,
        35053L,
        35104L,
        35518L,
        35653L,
        36011L,
        36708L,
        36865L,
        38570L,
        39187L,
        40327L,
        40406L,
        40545L,
        40855L,
        41507L,
        43263L,
        43667L,
        45435L,
        45568L,
        47255L,
        47505L,
        47996L,
        48562L,
        49240L,
        49722L,
        49769L,
        54339L,
        54632L,
        54954L,
        55219L,
        56889L,
        56934L,
        57102L,
        61836L,
        61969L,
        64495L,
        64547L,
        65193L,
        65555L,
        65717L,
        68284L,
        68352L,
        71002L,
        71021L,
        73047L,
        73134L,
        73416L,
        75120L,
        75779L,
        77000L,
        77190L,
        79954L,
        80326L,
        80438L,
        80517L,
        80525L,
        80934L,
        80947L,
        81705L,
        82581L,
        86695L,
        87513L,
        87626L,
        87751L,
        87902L,
        87981L,
        88227L,
        88236L,
        88265L,
        90814L,
        90922L,
        91085L,
        91234L,
        91246L,
        94924L,
        95268L,
        95778L,
        96106L,
        98306L,
        99135L,
        100041L,
        100120L,
        100523L,
        100585L,
        103552L,
        103858L,
        104129L,
        104308L,
        104591L,
        105644L,
        106223L,
        106954L,
        107710L,
        107997L,
        111427L,
        111887L,
        112275L,
        112459L,
        112571L,
        112701L,
        112768L,
        113806L,
        114297L,
        114733L,
        115319L,
        115596L,
        116308L,
        116364L,
        123864L,
        124173L,
        124232L,
        125673L,
        128958L,
        131573L,
        131583L,
        132139L,
        133350L,
        133617L,
        133944L,
        134559L,
        134589L,
        134704L,
        137382L,
        140357L,
        140596L,
        140780L,
        140909L,
        141167L,
        141806L,
        142545L,
        145369L,
        145804L,
        146028L,
        146355L,
        147007L,
        147066L,
        147162L,
        147319L,
    ]
